/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package prueba;
import org.antlr.runtime.*;
import javax.swing.JOptionPane;
import lexico.*;

/**
 *
 * @author Cesar
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception{
       String hilera, seguir;

       int a; int b;
        //CharStream c;
        ANTLRStringStream input;   //variable para la intreda de la expresion regular a analizar

        calcAntlrLexer lexer;   // variable para realizar el analisis lexico

        CommonTokenStream tokens;  //para tratar y retornar los tokens

        calcAntlrParser parser;  //variable para el analisis sentactico

        boolean continuar= true;



        while (continuar){

          hilera = JOptionPane.showInputDialog("Inserte la hilera con la operación que desea realizar. \n"

                                                    + "Ejem: (3+2*20/5)\n *Nota: El resultado aparecerá en la consola."

                                                    + "\nSi se da un error como token inesperado o división por cero la ejecución terminará.");

          hilera += "\n";

          input = new ANTLRStringStream(hilera);  /*inicializamos la entreda donde le enviamos una cadena o
                                                    una direccion de un archivo donde contenga la expresion a analizar*/

          lexer = new calcAntlrLexer(input);  /* creamos una clase del analizador lexico me recive un CharStream como entreda*/

          tokens = new CommonTokenStream(lexer);   /* dado el archivo del analizador lexico sacamos los tokens */

          parser = new calcAntlrParser(tokens); /* una ves identificados los tokens construimos
                                                    las gramaticas de forma correcta*/

          parser.prog();  /* gramatica principal   donde me retorna los resultados*/

          seguir = JOptionPane.showInputDialog("¿Desea seguir utilizando la calculadora? ¿SI o NO?");

          if(seguir==null||(!seguir.equalsIgnoreCase("si")))

            continuar= false;
            

        }



        JOptionPane.showMessageDialog(null, "Gracias por utilizar la calculadora.",

                                       "A71925 y A70998 UCR 2009", JOptionPane.PLAIN_MESSAGE);

    }

}
